#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2014-08-22 01:14:23
# @Author  : shitao.tommy (hero007asd@gmail.com)
# @Link    : http://example.org
# @Version : $Id$


from web.handler.api import BaseApiHandler
from lib.tornado_routes import route
from tornado import gen
from tornado.web import asynchronous
from lib import libimage,libpage
from web.models.api.qrcode.out import Out

head_title = '出库信息'

@route(r'api/qr/out/new/?',name='out_new')
class NewOutHandler(BaseApiHandler):
    '''
    @title 新建出库信息
    @method post
    @param token 商户token，默认：test
    @param brand 品牌名
    @param partNo 料号
    @param num 数量
    @param weight 重量
    @param dataCode 
    @param shipTime 出货日期 格式：xxxx-xx-xx
    @param deliverAddress 收货地址
    @param client 客户名
    @param clientPn 客户料号
    @param orderNo 订单号
    @param user 用户名
    @param pwd 密码
    @retfield isOk 发布成功与否1成功0失败 
    @return {status:200, message:'', data:null}---status:500(系统错误)400(请传入必要参数)
    @description 新建出库信息
    '''
    @asynchronous
    @gen.coroutine
    def post(self):
        token = self.get_argument('token',default='test')#测试用
        brand = self.get_argument('brand',default='')
        part_no = self.get_argument('partNo',default='')
        num = self.get_argument('num',default='')
        weight=self.get_argument('weight',default='')
        data_code = self.get_argument('dataCode',default='')
        ship_time = self.get_argument('shipTime',default='')
        deliver_address = self.get_argument('deliverAddress',default='')
        client = self.get_argument('client',default='')
        client_pn = self.get_argument('clientPn',default='')
        order_no = self.get_argument('orderNo',default='')
        user = self.get_argument('user',default='')
        pwd = self.get_argument('pwd',default='')
        if token == '':
            self.write_fail(None, 400, '请传入商户')
        else:
            ret = yield Out().new(token, brand, part_no, num, weight, data_code, ship_time, deliver_address, client, client_pn, order_no, user, pwd)
            if ret == '-1':
                self.write_fail(None, 500, '系统错误')
            elif ret == '0':
                self.write_success({'isOk':0})
            elif ret == '1':
                self.write_success({'isOk':1})
        self.finish()


@route(r'api/qr/out/list/?',name='out_list')
class ListOutHandler(BaseApiHandler):
    '''
    @title 出库信息列表
    @method get
    @param token 商户token，默认：test
    @param partNo 料号
    @param brand 品牌名
    @param dataCode 
    @param shipTime 出货时间 格式：xxxx-xx-xx
    @param deliverAddress 收货地址
    @param client 客户名
    @param clientPn 客户料号
    @param orderNo 订单号
    @param page 第几页 默认：1
    @param offset 每页显示多少数据 默认：20
    @retfield token 商户token
    @retfield brand 品牌名
    @retfield partNo 料号
    @retfield num 数量
    @retfield weight 重量
    @retfield dataCode 
    @retfield shipTime 出货时间 格式：xxxx-xx-xxTxx:xx:xx
    @retfield deliverAddress 收货地址
    @retfield client 客户名
    @retfield clientPn 客户料号
    @retfield orderNo 订单号
    @retfield user 用户名
    @retfield pwd 密码
    @retfield isOk 发布成功与否1成功0失败 
    @return {status:200, message:'', data:null}---status:500(系统错误)
    @description 出库信息列表
    '''
    @asynchronous
    @gen.coroutine
    def get(self):
        token = self.get_argument('token',default='test')#测试用
        brand = self.get_argument('brand',default='')
        data_code = self.get_argument('dataCode',default='')
        ship_time = self.get_argument('shipTime',default='')
        deliver_address = self.get_argument('deliverAddress',default='')
        client = self.get_argument('client',default='')
        client_pn = self.get_argument('clientPn',default='')
        order_no = self.get_argument('orderNo',default='')
        part_no = self.get_argument('partNo',default='')
        page = self.get_argument('page', default=1)
        offset = self.get_argument('offset', default=20)

        ret = yield Out().list(token, brand, data_code, ship_time, deliver_address, client, client_pn, order_no,part_no,libpage.start(page, offset), offset)
        if ret == '-1':
            self.write_fail(None, 500, '系统错误')
        else:
            self.write_success(ret)

        self.finish()

@route(r'api/qr/out/upd/?',name='out_upd')
class UpdOutHandler(BaseApiHandler):
    '''
    @title 修改出库信息
    @method post
    @param id 出库id
    @param token 商户token，默认：test
    @param brand 品牌名
    @param partNo 料号
    @param num 数量
    @param weight 重量
    @param dataCode 
    @param shipTime 出货时间 格式：xxxx-xx-xxTxx:xx:xx
    @param deliverAddress 收货地址
    @param client 客户名
    @param clientPn 客户料号
    @param orderNo 订单号
    @param user 用户名
    @param pwd 密码
    @retfield isOk 修改成功与否1成功0失败 
    @return {status:200, message:'', data:null}---status:500(系统错误)400(请传入出库id)
    @description 修改出库信息
    '''
    @asynchronous
    @gen.coroutine
    def post(self):
        fid = self.get_argument('id', default=0)
        token = self.get_argument('token',default='test')#测试用
        brand = self.get_argument('brand',default='')
        part_no = self.get_argument('partNo',default='')
        num = self.get_argument('num',default='')
        weight=self.get_argument('weight',default='')
        data_code = self.get_argument('dataCode',default='')
        ship_time = self.get_argument('shipTime',default='')
        deliver_address = self.get_argument('deliverAddress',default='')
        client = self.get_argument('client',default='')
        client_pn = self.get_argument('clientPn',default='')
        order_no = self.get_argument('orderNo',default='')
        user = self.get_argument('user',default='')
        pwd = self.get_argument('pwd',default='')
        if fid == 0:
            self.write_fail(None, 400, '请传入出库id')
        else:
            ret = yield Out().update(fid, token, brand, part_no, num, weight, data_code, ship_time, deliver_address, client, client_pn, order_no, user, pwd)
            if ret == '-1':
                self.write_fail(None, 500, '系统错误')
            elif ret == '0':
                self.write_success({'isOk':0})
            elif ret == '1':
                self.write_success({'isOk':1})
        self.finish()


@route(r'api/qr/out/del/?',name='out_del')
class DelOutHandler(BaseApiHandler):
    '''
    @title 删除出库信息
    @method post
    @param id 出库id
    @retfield isOk 删除成功与否1成功0失败 
    @return {status:200, message:'', data:null}---status:500(系统错误)400(请传入出库id)
    @description 删除出库信息
    '''
    @asynchronous
    @gen.coroutine
    def post(self):
        fid = self.get_argument('id', default=0)
        if fid == 0:
            self.write_fail(None, 400, '请传入出库id')
        else:
            ret = yield Out().delete(fid)
            if ret == '-1':
                self.write_fail(None, 500, '系统错误')
            elif ret == '0':
                self.write_success({'isOk':0})
            elif ret == '1':
                self.write_success({'isOk':1})
        self.finish()

@route(r'api/qr/out/dtl/?',name='out_dtl')
class DtlOutHandler(BaseApiHandler):
    '''
    @title 出库信息列表
    @method get
    @param fid 出库id
    @retfield token 商户token
    @retfield brand 品牌名
    @retfield partNo 料号
    @retfield num 数量
    @retfield weight 重量
    @retfield dataCode 
    @retfield shipTime 出货时间 格式：xxxx-xx-xxTxx:xx:xx
    @retfield deliverAddress 收货地址
    @retfield client 客户名
    @retfield clientPn 客户料号
    @retfield orderNo 订单号
    @retfield user 用户名
    @retfield pwd 密码
    @retfield isOk 发布成功与否1成功0失败 
    @return {status:200, message:'', data:null}---status:500(系统错误)
    @description 出库信息列表
    '''
    @asynchronous
    @gen.coroutine
    def get(self):
        fid = self.get_argument('fid', default=0)

        ret = yield Out().dtl(fid)
        if ret == '-1':
            self.write_fail(None, 500, '系统错误')
        else:
            self.write_success(ret)

        self.finish()